import { get, post } from '@/utils/request';

/**
 * 获取数据同步任务列表
 * @param params 查询参数
 */
export function getTaskList(params?: any) {
  return get('/taskDataSyncSetting/list', params);
}

/**
 * 获取数据同步任务详情
 * @param id 任务ID
 */
export function getTaskDetail(id: string) {
  return get('/taskDataSyncSetting/info', { id });
}

/**
 * 添加数据同步任务
 * @param data 任务数据
 */
export function createTask(data: any) {
  return post('/taskDataSyncSetting/create', data);
}

/**
 * 编辑数据同步任务
 * @param data 任务数据
 */
export function updateTask(data: any) {
  return post('/taskDataSyncSetting/update', data);
}

/**
 * 删除数据同步任务
 * @param id 任务ID
 */
export function deleteTask(id: string) {
  return post('/taskDataSyncSetting/delete', { id });
}

/**
 * 更新任务状态（启用/禁用）
 * @param id 任务ID
 * @param status 状态值 (0禁用, 1启用)
 */
export function updateTaskStatus(id: string, status: number) {
  return post('/taskDataSyncSetting/updatestatus', { id, status });
}

/**
 * 立即执行任务
 * @param id 任务ID
 */
export function executeTask(id: string) {
  return post('/taskDataSyncSetting/execute', { id });
}

/**
 * 获取任务执行日志列表
 * @param params 查询参数
 */
export function getTaskLogs(params?: any) {
  return post('/taskDataExecutionLog/list', params);
}

/**
 * 获取任务名称列表（用于下拉选择）
 */
export function getTaskNameList() {
  return get('/taskDataExecutionLog/tasks');
}

/**
 * 获取任务执行日志详情
 * @param id 日志ID
 */
export function getTaskLogDetail(id: string) {
  return get(`/taskDataExecutionLog/detail/${id}`);
}

/**
 * 查询对比结果列表
 * @param logId 日志ID
 */
export function getContrastResultList(logId: string) {
  return post('/taskDataExecutionLog/queryContrastRresultList', {
    taskLogId: logId
  });
}

/**
 * 获取配对的目标和源数据，支持分页加载
 * @param logId 日志ID
 * @param offset 跳过的记录数
 * @param limit 每次加载的记录数
 */
export function getPairedComparisonData(logId: string, offset: number = 0, limit: number = 100) {
  return post('/taskDataExecutionLog/getPairedComparisonData', {
    taskLogId: logId,
    offset,
    limit
  });
}

/**
 * 导出对比结果
 * @param logId 日志ID
 */
export function exportContrastResult(logId: string) {
  return post('/taskDataExecutionLog/exportContrastRresultList', 
    { taskLogId: logId },
    { 
      responseType: 'blob'  // 指定响应类型为二进制数据
    }
  ).then((response: any) => {
    // 创建Blob对象
    const blob = new Blob([response], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' });
    
    // 创建下载链接
    const downloadLink = document.createElement('a');
    const url = window.URL.createObjectURL(blob);
    downloadLink.href = url;
    downloadLink.download = `对比结果_${logId}_${new Date().getTime()}.xlsx`;
    document.body.appendChild(downloadLink);
    
    // 模拟点击下载
    downloadLink.click();
    
    // 清理
    window.URL.revokeObjectURL(url);
    document.body.removeChild(downloadLink);
    
    return response;
  });
}

/**
 * 获取所有数据源列表
 */
export function getDataSourceList() {
  return get('/dbInfoSetting/all_list');
}

/**
 * 获取数据库表列表
 * @param dbId 数据源ID
 */
export function getTableList(dbId: string) {
  return get('/dbInfoSetting/tables', { id: dbId });
}

/**
 * 获取表字段列表
 * @param dbId 数据源ID
 * @param tableName 表名
 */
export function getTableColumns(dbId: string, tableName: string) {
  return get('/dbInfoSetting/columns', { id: dbId, table_name: tableName });
}